{
if(!((*way)[i]=GPS_Way_New()))
return MEMORY_ERROR;
-
+again:
if(!GPS_Packet_Read(fd, &rec))
return gps_errno;
if(!GPS_Send_Ack(fd, &tra, &rec))
return gps_errno;
+/* Temp: just retry on read error. */
+ if (rec->n == 0) {
+ goto again;
+ }
+
switch(gps_waypt_type)
{
case pD100:
memset(&pkt, 0, sizeof(pkt));
n = gusb_cmd_get(&pkt, sizeof(pkt));
+ if ( n <= 0 ) {
+// FIXME: revisit why we're intermittend getting read errors here...
+// fprintf(stderr, "Eeek %d\n", n);
+ (*packet)->n = (UC) 0;
+ return n;
+ }
+
if (1 && gps_show_bytes) {
GPS_Diag("\nRx Data:[%d]",n);
for (i = 0; i < n; i++)